#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
演示增量训练功能使用方法
"""

import sys
import os
import subprocess

# 添加项目根目录到路径
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_root)

def demonstrate_help():
    """演示帮助信息"""
    print("🔧 演示增量训练脚本帮助信息")
    print("=" * 60)
    
    try:
        result = subprocess.run([sys.executable, 'scripts/plw/incremental_train_plw_model.py', '--help'], 
                              cwd=project_root, capture_output=True, text=True, encoding='utf-8')
        print(result.stdout)
        return True
    except Exception as e:
        print(f" 演示帮助信息失败: {e}")
        return False

def demonstrate_basic_usage():
    """演示基本使用方法"""
    print("\n🔧 演示基本使用方法")
    print("=" * 60)
    
    print("🚀 增量训练基本命令:")
    print("   python scripts/plw/incremental_train_plw_model.py")
    print()
    print("📋 该命令将:")
    print("   1. 使用最近30%的数据进行训练")
    print("   2. 加载现有模型（如果存在）")
    print("   3. 在现有模型基础上进行增量优化")
    print("   4. 保存更新后的模型")
    return True

def demonstrate_advanced_usage():
    """演示高级使用方法"""
    print("\n🔧 演示高级使用方法")
    print("=" * 60)
    
    print("🚀 增量训练高级命令示例:")
    print("   # 使用最近50%的数据，训练80轮，学习率0.001")
    print("   python scripts/plw/incremental_train_plw_model.py --ratio 0.5 --epochs 80 --lr 0.001")
    print()
    print("   # 使用最近20%的数据，训练50轮")
    print("   python scripts/plw/incremental_train_plw_model.py --ratio 0.2 --epochs 50")
    print()
    print("   # 使用默认数据比例，训练150轮，学习率0.0005")
    print("   python scripts/plw/incremental_train_plw_model.py --epochs 150 --lr 0.0005")
    return True

def demonstrate_ui_usage():
    """演示UI使用方法"""
    print("\n🔧 演示UI使用方法")
    print("=" * 60)
    
    print("🚀 通过图形界面使用增量训练:")
    print("   1. 运行主应用程序: python lottery_predictor_app.py")
    print("   2. 切换到排列5页签")
    print("   3. 在'模型训练'区域找到'🔄 增量训练 模型'按钮")
    print("   4. 点击按钮开始增量训练")
    print("   5. 在日志区域查看训练进度")
    print("   6. 训练完成后模型会自动更新")
    return True

def demonstrate_benefits():
    """演示增量训练的优势"""
    print("\n🔧 增量训练的优势")
    print("=" * 60)
    
    print(" 效率提升:")
    print("   • 相比完整训练，速度更快")
    print("   • 只处理最新数据，减少计算量")
    print()
    print(" 资源节约:")
    print("   • 减少CPU/GPU使用时间")
    print("   • 降低内存消耗")
    print()
    print(" 时效性:")
    print("   • 及时更新模型以适应最新数据模式")
    print("   • 保持预测结果的时效性")
    print()
    print(" 稳定性:")
    print("   • 在现有模型基础上优化")
    print("   • 避免从零开始训练的不稳定性")
    return True

def demonstrate_best_practices():
    """演示最佳实践"""
    print("\n🔧 使用最佳实践")
    print("=" * 60)
    
    print("📅 日常维护:")
    print("   • 每天使用增量训练更新模型")
    print("   • 监控训练日志和预测效果")
    print()
    print(" 定期完整训练:")
    print("   • 每周或每月进行一次完整训练")
    print("   • 确保模型质量不会因增量训练而下降")
    print()
    print("⚙️ 参数调优:")
    print("   • 根据数据更新频率调整增量数据比例")
    print("   • 根据效果调整训练轮数和学习率")
    print()
    print("效果监控:")
    print("   • 定期检查预测准确率")
    print("   • 对比增量训练前后的预测效果")
    return True

if __name__ == "__main__":
    print("🎯 增量训练功能使用演示")
    print("=" * 80)
    
    # 演示各个方面的使用方法
    demonstrations = [
        demonstrate_help,
        demonstrate_basic_usage,
        demonstrate_advanced_usage,
        demonstrate_ui_usage,
        demonstrate_benefits,
        demonstrate_best_practices
    ]
    
    for demo in demonstrations:
        if not demo():
            print(f" 演示失败: {demo.__name__}")
            sys.exit(1)
    
    print("\n" + "=" * 80)
    print("🎉 增量训练功能演示完成!")
    print()
    print("📚 相关文档:")
    print("   • 增量训练使用说明.md - 详细使用指南")
    print("   • 增量训练功能实现总结.md - 技术实现细节")
    print()
    print("🚀 现在您可以:")
    print("   1. 使用命令行进行增量训练")
    print("   2. 通过图形界面使用增量训练")
    print("   3. 查看相关文档了解更多细节")